
import axios from "axios";
import cookies from "@/utils/util.cookies";
import { apiWxWorkerUserInfo } from "@/axios/api";

/* ******************************************************
 *
 * 这里应该是企业微信使用的
 *
 * *****************************************************/
export default {
	namespaced: true,
	// 注意，相关状态要先在state里设置好变量，才是响应式的，页面上才能自动响应更新
	state: {
		userId  : '',
		externalUserId:'',
		token   : '',//放jwt
		userInfo: {},
	},

	getters: {
		//员工是否登录
		isLoginUser( state ) {
			return state.userId ? true : false
		},
		//客户是否登录
		isLoginExternalUser(state){
			return state.externalUserId ? true : false
		}
	},
	

	mutations: {

		SET_TOKEN(state,data){
			state.token = data
		},
		
		// 设置用户信息
		SET_USERINFO(state,data){
			
			if(data.UserId){
				state.userId   = data.UserId //返回的这个字段U他妈的是大写的
			}
			if(data.external_userid ) {
				state.externalUserId = data.external_userid
			}
			state.userInfo = data
		},

		// 退出清空
		CLEAR_USERINFO(state) {
			state.userId   = ''
			state.externalUserId   = ''
			state.token   = ''
			state.userInfo = {}
			console.log('清空了user的state:',state)
		}
	},

	actions:{

		// 获取用户登录信息
		userLoginInfo({ commit, state, getters,dispatch }) {
			return new Promise((resolve,reject) => {
				
				// // 如果没有用户信息，向服务器请求用户信息
				// if (getters.isLogin  == false) { //如果没有登录才读取用户信息
				// } else {
				// 	console.log('已登录，不重复请求用户信息')
				// 	resolve() // store中有用户信息，则改变padding状态
				// }
				
				apiWxWorkerUserInfo({"token": state.token }).then(res => {
					if(res.code == 0){
						commit('SET_USERINFO', res.data)
						dispatch('userVisitRecord') //首次登录记录一下
						console.log('主动读取用户信息',res.data)
					}else{
						console.log('主动读取用户信息失败，状态码：',res.code)
					}
					setTimeout(() => {
						resolve() //有请求到数据，改变padding状态
					}, 100);
				}).catch(e => {
					resolve() //即使没有请求到用户信息，也应该改变padding状态
				})
			})
		},

		// 退出登录
		userExitLogin( { commit } ) {
			console.log('退出登录，并清除相关数据');
			// 清空store里的数据
			commit('CLEAR_USERINFO') //清除用户令牌
			commit('cart/clartCart',{},{root:true}) //清除购物车缓存
			//清理cookies
			// 由于cookies工具的remove删除兼容有问题，只能用于localhost的
			// 当线上使用www或没有www访问生成的cookies的域会不一样，导致不能删除
			// 下面使用原生方法强制删除在线域名的cookies
			cookies.remove('unionid')
			document.cookie = 'unionid=;expires='+(new Date(1))+';domain=zmanbox.com;path=/';
			document.cookie = 'unionid=;expires='+(new Date(1))+';domain=www.zmanbox.com;path=/';
			console.log('删除了unionid')
		},
		
	}
}
